home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / gui / muibuilderv20.lha / MUIBuilder / MB / E / Localized_DemoGenCodeE21b / GUI.e < prev    next >
Encoding:
Text File  |  1994-10-14  |  6.2 KB  |  222 lines

  1. /*****
  2. ** External modules
  3. *****/
  4. MODULE 'muimaster' , 'libraries/mui'
  5. MODULE 'intuition/classes', 'intuition/classusr'
  6. MODULE 'utility/tagitem' , 'utility/hooks'
  7.  
  8.  
  9. /*****
  10. ** Object definitions
  11. *****/
  12. OBJECT app_arexx
  13.     commands :    LONG
  14.     error    :    hook
  15. ENDOBJECT
  16.  
  17. OBJECT app_display
  18.     button_pressed          :    hook
  19. ENDOBJECT
  20.  
  21. OBJECT app_obj
  22.     app                     :    LONG
  23.     wi_the_window           :    LONG
  24.     bt_put_constant_string  :    LONG
  25.     bt_put_variable         :    LONG
  26.     bt_return_id            :    LONG
  27.     bt_call_hook            :    LONG
  28.     tx_result               :    LONG
  29.     bt_quit                 :    LONG
  30.     stR_TX_result           :    LONG
  31. ENDOBJECT
  32.  
  33.  
  34. /*****
  35. ** Constant definitions
  36. *****/
  37. ENUM ID_BUTTON_PRESSED = 1
  38.  
  39.  
  40. /*************************************************************************
  41. ** Method to create one instance of one object or the whole application **
  42. *************************************************************************/
  43. PROC create_app( display : PTR TO app_display ,
  44.              icon ,
  45.              arexx : PTR TO app_arexx ,
  46.              menu )
  47.  
  48.     DEF grOUP_ROOT_0C , gr_grp_0 , gr_grp_1 , la_result , gr_grp_2
  49.     DEF tmp_object : PTR TO app_obj
  50.  
  51.     IF ( tmp_object := New( SIZEOF app_obj ) ) = NIL THEN RETURN NIL
  52.  
  53.     tmp_object.stR_TX_result           := get_DemoGenCodeE_string( msg_TX_result )
  54.  
  55.     tmp_object.bt_put_constant_string := SimpleButton( getMBstring( msg_BT_put_constant_string ) )
  56.  
  57.     tmp_object.bt_put_variable := SimpleButton( getMBstring( msg_BT_put_variable ) )
  58.  
  59.     tmp_object.bt_return_id := SimpleButton( getMBstring( msg_BT_return_id ) )
  60.  
  61.     tmp_object.bt_call_hook := SimpleButton( getMBstring( msg_BT_call_hook ) )
  62.  
  63.     la_result := Label( getMBstring( msg_LA_result ) )
  64.  
  65.     tmp_object.tx_result := TextObject ,
  66.         MUIA_HelpNode , 'TX_result' ,
  67.         MUIA_Frame , MUIV_Frame_Text ,
  68.         MUIA_Text_Contents , tmp_object.stR_TX_result ,
  69.         MUIA_Text_SetMin , MUI_TRUE ,
  70.     End
  71.  
  72.     gr_grp_1 := GroupObject ,
  73.         MUIA_Group_Horiz , MUI_TRUE ,
  74.         Child , la_result ,
  75.         Child , tmp_object.tx_result ,
  76.     End
  77.  
  78.     gr_grp_0 := GroupObject ,
  79.         MUIA_Frame , MUIV_Frame_Group ,
  80.         MUIA_FrameTitle , getMBstring( msg_GR_grp_0Title ) ,
  81.         Child , tmp_object.bt_put_constant_string ,
  82.         Child , tmp_object.bt_put_variable ,
  83.         Child , tmp_object.bt_return_id ,
  84.         Child , tmp_object.bt_call_hook ,
  85.         Child , gr_grp_1 ,
  86.     End
  87.  
  88.     tmp_object.bt_quit := SimpleButton( getMBstring( msg_BT_quit ) )
  89.  
  90.     gr_grp_2 := GroupObject ,
  91.         Child , tmp_object.bt_quit ,
  92.     End
  93.  
  94.     grOUP_ROOT_0C := GroupObject ,
  95.         Child , gr_grp_0 ,
  96.         Child , gr_grp_2 ,
  97.     End
  98.  
  99.     tmp_object.wi_the_window := WindowObject ,
  100.         MUIA_Window_Title , getMBstring( msg_WI_the_window ) ,
  101.         MUIA_HelpNode , 'WI_the_window' ,
  102.         MUIA_Window_ID , "0WIN" ,
  103.         WindowContents , grOUP_ROOT_0C ,
  104.     End
  105.  
  106.     tmp_object.app := ApplicationObject ,
  107.         ( IF icon THEN MUIA_Application_DiskObject ELSE TAG_IGNORE ) , icon ,
  108.         ( IF arexx.commands THEN MUIA_Application_Commands ELSE TAG_IGNORE ) , arexx.commands ,
  109.         ( IF arexx.error THEN MUIA_Application_RexxHook ELSE TAG_IGNORE ) , arexx.error ,
  110.         ( IF menu THEN MUIA_Application_Menu ELSE TAG_IGNORE ) , menu ,
  111.         MUIA_Application_Author , 'Lionel Vintenat' ,
  112.         MUIA_Application_Base , 'DEMOGENCODEE' ,
  113.         MUIA_Application_Title , 'DemoGenCodeE' ,
  114.         MUIA_Application_Version , '$VER: DemoGenCodeE 1.0 (01.09.94)' ,
  115.         MUIA_Application_Copyright , getMBstring( msg_AppCopyright ) ,
  116.         MUIA_Application_Description , getMBstring( msg_AppDescription ) ,
  117.         SubWindow , tmp_object.wi_the_window ,
  118.     End
  119.  
  120.     IF tmp_object.app = NIL
  121.         Dispose( tmp_object )
  122.         tmp_object := NIL
  123.     ENDIF
  124.  
  125. ENDPROC tmp_object
  126.  
  127.  
  128. /**********************************************************
  129. ** Method to dispose the object or the whole application **
  130. **********************************************************/
  131. PROC dispose_app( tmp_object : PTR TO app_obj )
  132.  
  133.     Mui_DisposeObject( tmp_object.app )
  134.     Dispose( tmp_object )
  135.  
  136. ENDPROC
  137.  
  138.  
  139. /*****************************************************************************************
  140. ** Method to initialize all the notifications of one object or of the whole application **
  141. *****************************************************************************************/
  142. PROC init_notifications_app( tmp_object : PTR TO app_obj , display : PTR TO app_display )
  143.  
  144.     domethod( tmp_object.bt_put_constant_string ,
  145.         [ MUIM_Notify , MUIA_Pressed , FALSE ,
  146.         tmp_object.tx_result ,
  147.         3 ,
  148.         MUIM_Set , MUIA_Text_Contents , getMBstring( msg_BT_put_constant_stringNotify0 ) ] )
  149.  
  150.     domethod( tmp_object.bt_put_variable ,
  151.         [ MUIM_Notify , MUIA_Pressed , FALSE ,
  152.         tmp_object.tx_result ,
  153.         3 ,
  154.         MUIM_Set , MUIA_Text_Contents , string_var ] )
  155.  
  156.     domethod( tmp_object.bt_return_id ,
  157.         [ MUIM_Notify , MUIA_Pressed , FALSE ,
  158.         tmp_object.app ,
  159.         2 ,
  160.         MUIM_Application_ReturnID , ID_BUTTON_PRESSED ] )
  161.  
  162.     domethod( tmp_object.bt_call_hook ,
  163.         [ MUIM_Notify , MUIA_Pressed , FALSE ,
  164.         tmp_object.app ,
  165.         2 ,
  166.         MUIM_CallHook , display.button_pressed ] )
  167.  
  168.     domethod( tmp_object.bt_quit ,
  169.         [ MUIM_Notify , MUIA_Pressed , FALSE ,
  170.         tmp_object.app ,
  171.         2 ,
  172.         MUIM_Application_ReturnID , MUIV_Application_ReturnID_Quit ] )
  173.  
  174.     domethod( tmp_object.wi_the_window ,
  175.         [ MUIM_Window_SetCycleChain , tmp_object.bt_put_constant_string ,
  176.         tmp_object.bt_put_variable ,
  177.         tmp_object.bt_return_id ,
  178.         tmp_object.bt_call_hook ,
  179.         tmp_object.tx_result ,
  180.         tmp_object.bt_quit ,
  181.         0 ] )
  182.  
  183.     set( tmp_object.wi_the_window ,
  184.         MUIA_Window_Open , MUI_TRUE )
  185.  
  186. ENDPROC
  187.  
  188.  
  189. /***************************************************************
  190. ** Special GetString() function for MUIBuilder generated code **
  191. ***************************************************************/
  192. PROC getMBstring( string_reference )
  193.  
  194.     DEF local_string
  195.  
  196.     local_string := get_DemoGenCodeE_string( string_reference )
  197.  
  198. ENDPROC ( IF local_string[ 1 ] = 0 THEN ( local_string + 2 ) ELSE local_string )
  199.  
  200.  
  201. /**********************
  202. ** domethod function **
  203. **********************/
  204. PROC domethod( obj : PTR TO object , msg : PTR TO msg )
  205.  
  206.     DEF h : PTR TO hook , o : PTR TO object , dispatcher
  207.  
  208.     IF obj
  209.         o := obj-SIZEOF object        /* instance data is to negative offset */
  210.         h := o.class
  211.         dispatcher := h.entry        /* get dispatcher from hook in iclass */
  212.         MOVEA.L h,A0
  213.         MOVEA.L msg,A1
  214.         MOVEA.L obj,A2            /* probably should use CallHookPkt, but the */
  215.         MOVEA.L dispatcher,A3        /*   original code (DoMethodA()) doesn't. */
  216.         JSR (A3)            /* call classDispatcher() */
  217.         MOVE.L D0,o
  218.         RETURN o
  219.     ENDIF
  220.  
  221. ENDPROC NIL
  222.